/*
 * 　　版权所有（c）[2020] [不贫]
 * 　　[Rust 中文排序] 采用木兰宽松许可证第2版进行许可。
 * 　　你可以根据木兰宽松许可证第2版的条款和条件使用此软件。
 * 　　你可以在以下位置获得木兰宽松许可证第2版的副本：
 *            http://license.coscl.org.cn/MulanPSL2
 * 　　本软件按“原样”提供，不作任何明示或暗示的担保，包括但不限于不侵权、适销性或适合特定用途。
 * 　　查看木兰宽松许可证第2版获取更多信息。
 *
 *   Copyright (c) [2020] [BuPin]
 *   [rust_chinese_sort] is licensed under Mulan PSL v2.
 *   You can use this software according to the terms and conditions of the Mulan PSL v2.
 *   You may obtain a copy of Mulan PSL v2 at:
 *            http://license.coscl.org.cn/MulanPSL2
 *   THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 *   See the Mulan PSL v2 for more details.
 */

use pinyin::ToPinyin;
// use std::cmp::Ordering;
// pub fn 转普通话拼音(向量: &Vec<&str>) -> Vec<String> {
// #[derive(PartialEq, Eq, PartialOrd, Debug)]
pub struct PutonghuaJieguo {
    pub yuanwen: String,
    pub pinyin: Option<String>,
}

// impl Ord for PutonghuaJieguo {
//     fn cmp(&self, other: &Self) -> Ordering {
//         match &self.pinyin {
//             Some(a) => {
//                 match other.pinyin {
//                     Some(ref b) => b.cmp(a),
//                     None => other.yuanwen.cmp(a)
//                 }
//             },
//             None => {
//                 match other.pinyin {
//                     // Some(ref b) => self.yuanwen.cmp(b),
//                     // None => self.yuanwen.cmp(&other.yuanwen),
//                     Some(ref b) => b.cmp(&self.yuanwen),
//                     None => other.yuanwen.cmp(&self.yuanwen),
//                 }
//             },
//         }
//     }
// }

pub fn 转普通话拼音(向量: &Vec<&str>) -> Vec<PutonghuaJieguo> {
    let mut 返回 = Vec::new();


    for 位置 in 0..向量.len() {
        返回.push(PutonghuaJieguo{yuanwen: String::new(), pinyin: Some(String::new())});
        for 转换 in 向量[位置].to_pinyin() {
            if let Some(成拼音) = 转换 {
                // 返回[位置] = 返回[位置].to_owned() + 成拼音.with_tone_num_end();
                返回[位置] = PutonghuaJieguo{yuanwen: 向量[位置].to_owned(), pinyin: Some(返回[位置].pinyin.as_ref().unwrap().to_owned() + 成拼音.with_tone_num_end())};
            } else {
                // 返回[位置] = 向量[位置].to_owned();
                返回[位置] = PutonghuaJieguo{yuanwen: 向量[位置].to_owned(), pinyin: None};
                break;
            }
        }
    }

    返回
}
